#include "notas.h"
#include "aluno.h"

int create_notas(Notas *notas) {
    FILE *file = NULL;
    file = fopen(NOTAS_DB, "ab+");
    if (file) {
        if (!fwrite(notas, sizeof (Notas), 1, file)) {
            printf(CREATE_ERROR, "notas");
            fclose(file);
            return PROC_FAILURE;
        }
        fclose(file);
        return PROC_SUCCESS;
    } else {
        printf(OPEN_FILE_ERROR, NOTAS_DB);
        return PROC_FAILURE;
    }
}

int read_all_notes(int matricula, char *nivel) {
    FILE *file = NULL;
    Notas *notas = NULL;

    file = fopen(NOTAS_DB, "rb");
    if (file) {
        notas = (Notas *) malloc(sizeof (Notas));
        if (not notas) {
            printf(INSUFICIENT_MEMORY, "Notas");
            return PROC_FAILURE;
        }

        puts("Notas do Aluno\n");

        fread(notas, sizeof (Notas), 1, file);
        if (!strcmp(nivel, "SUPERIOR")) {
            printf("%-8s %-8s %-8s %-8s %-10s\n", "Nota 1", "Nota 2", "Nota 3", "Média", "Disciplina");
            puts("-------- -------- -------- -------- ----------");
            while (not feof(file)) {
                if (notas->id_aluno == matricula) {
                    printf("%-8.2f %-8.2f %-8.2f %-8.2f %-10d\n",
                            notas->nota_1, notas->nota_2,
                            notas->nota_3, calc_notes_superior(notas), notas->id_disciplina);
                }
                fread(notas, sizeof (Notas), 1, file);
            }
        } else {
            printf("%-8s %-8s %-8s %-10s\n", "Nota 1", "Nota 2", "Média", "Disciplina");
            while (not feof(file)) {
                if (notas->id_aluno == matricula) {
                    puts("-------- -------- -------- ----------");
                    printf("%-8.2f %-8.2f %-8.2f %-10d\n",
                            notas->nota_1, notas->nota_2,
                            calc_notes_tecnico(notas), notas->id_disciplina);
                }
                fread(notas, sizeof (Notas), 1, file);
            }
        }
        puts("\n");
        free(notas);
        fclose(file);
        return PROC_SUCCESS;
    } else {
        printf(OPEN_FILE_ERROR, NOTAS_DB);
        return PROC_FAILURE;
    }
}